1. Field of the Invention
The present invention generally relates to computer systems, and more particularly to a system and method for determining which objects in a set of objects should be processed.
2. Discussion of the Related Art
In recent years, the field of computer systems and computer programming has grown exponentially. With computing speeds and technology ever increasing, the complexity and sophistication of computer programs is increasing commensurately. Due to a number of factors, including increased product sophistication, hurried deadlines to market, inadequate testing, etc., many computer programs are released with various defects, which are later discovered. A defect is generally termed as either a xe2x80x9ccriticalxe2x80x9d or xe2x80x9cnon-criticalxe2x80x9d defect, depending upon the ramifications of the defect. Defects that may corrupt system resources, or even crash a system altogether, are termed xe2x80x9ccritical,xe2x80x9d while other more benign defects are termed xe2x80x9cnon-critical.xe2x80x9d
In addition to latent program defects, other defects or problems sometimes arise when certain combinations of software packages are installed on certain computer systems. As is known, other defects, problems, and complications arise, with the increasing complexity of computing systems.
As is known, defects are often corrected through software xe2x80x9cpatches,xe2x80x9d which are programs that install over a program containing a defect. Specifically, patches are designed to integrate into a program and replace known, existing defects. For a given software program, particularly after the program has been available for a long time, there are often a number of identified defects, and correspondingly a number of patches. Indeed, sometimes patches are created to replace other patches, for a given program or configuration. At other times patches may be recalled.
As is known, other defects may exist, in addition to software defects, or those related to software patches. For example, certain software components may be improperly installed on a particular system. In addition, there may be firmware problems, hardware problems, or configuration errors (failure to properly install components). In this past, solutions to these types of problems were often reactive, rather than proactive. In this regard, often it is not until a computer user encounters a problem and requests technical support that a solution is provided. Unfortunately, xe2x80x9cdown-timexe2x80x9d is often encountered in such systems and situations.
Accordingly, there is a desire to provide a system and method for proactively (and efficiently) analyzing a system configuration to determine whether there are any deficiencies or defects in a computer system (including, but not limited to, software defects) that need to be corrected or updated.
Certain objects, advantages and novel features of the invention will be set forth in part in the description that follows and in part will become apparent to those skilled in the art upon examination of the following or may be learned with the practice of the invention. The objects and advantages of the invention may be realized and obtained by means of the instrumentalities and combinations particularly pointed out in the appended claims.
To achieve the advantages and novel features, the present invention is generally directed to a system and method for determining whether components of a computer system should be analyzed for updates and repairs. In accordance with one aspect of the invention, a method evaluates a configuration to determine the characteristics of the computer system. The method also evaluates an analyzer object, containing information about an analyzer, to determine the characteristics that must be possessed by any system to be analyzed by that analizer. Then, the method evaluates an update object, containing information identifying the last time that the components of the computer system were analyzed by the analyzer, to determine whether the analyzer should be run again.
In the preferred embodiment, an analyzer is a program that evaluates a system configuration to determine whether there are certain errors, defects, potential errors, or potential defects in the configuration. In this respect, errors or defects can arise for a variety of reasons. A given analyzer will preferably be configured to evaluate a given configuration for a given error. Therefore; in a system constructed in accordance with one aspect of the invention, there may be a number of analyzers, each uniquely configured to evaluate for a different error or defect. In such a system, the inventive method will preferably determine which one or ones of the plurality of analyzers should be run for a given system configuration.
In one embodiment various objects or files may be utilized to store various information. For example, a configuration object may be used to store configuration data about a given, target computer system. Such a configuration object may include component codes to uniquely identify the kind of data it contains. The object may also include a timestamp associated with each component code to indicate when that component was last modified or updated. Likewise, an analyzer object may be included to define the various analyzers that may be run. The analyzer may associate with each analyzer a list of component codes, which pertain to the associated analyzer. An update object may also be provided to identify information such as when each analyzer was run on a given object.
In accordance with other aspects of the invention, a computer system may be provided and configured to execute the method summarized above. Likewise, and in accordance with another aspect of the invention, a computer readable medium may be provided having program code to specifically configure a computer to carry out the method summarized above.